# 複製安裝檔內的redis.conf 到自己指定的路徑下
cp /home/redis/redis-6.2.5/redis.conf /home/redis/config/
# 啟動Redis Server使用自己設定好的config
./redis-server /home/redis/config/redis.conf
# 連線至Redis Server
redis-cli -h 127.0.0.1 -p 6379
# 取得目前載入設定的路徑
127.0.0.1:6379> config get dir
# 取得目前載入設定的內容
127.0.0.1:6379> config get *
# 修改設定值內容
127.0.0.1:6379> config set loglevel warning
127.0.0.1:6379> config get loglevel #驗證
# 顯示Redis Server的資訊和統計資料
127.0.0.1:6379> info server
# info後面server參數可以換成下列這些參數,取得相關資訊與統計資料.
# server clients memory persistence stats replication cpu modules errorstats cluster keyspace
Redis 執行操作指令不分大小寫,但如果是Key則有區分大小寫.
也可以透過此環境進行後面的課程
try redis
Redis中最常使用的型態.
可用指令
資料結構
設定key與value值.
127.0.0.1:6379> set key1 jacky
OK
127.0.0.1:6379> set key2 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
OK
127.0.0.1:6379> set key3 123
OK
127.0.0.1:6379> set key4 123.456
OK
一次設定多筆key與value值.
127.0.0.1:6379> mset name1 aaa name2 bbb name3 ccc
OK
取得指定key的value值.
127.0.0.1:6379> get key1
"jacky"
127.0.0.1:6379> object encoding key1
"embstr"
127.0.0.1:6379> get key2
"11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
127.0.0.1:6379> object encoding key2
"raw"
127.0.0.1:6379> get key3
"123"
127.0.0.1:6379> object encoding key3
"int"
127.0.0.1:6379> get key4
"123.456"
127.0.0.1:6379> object encoding key4
"embstr"
一次取得多個指定key的value值.
127.0.0.1:6379> mget name1 name2 name3
1) "aaa"
2) "bbb"
3) "ccc"
數值遞增1.
127.0.0.1:6379> get key3
"123"
127.0.0.1:6379> incr key3
(integer) 124
127.0.0.1:6379> get key3
"124"
# 此key5不存在
127.0.0.1:6379> get key5
(nil)
# 此時key會自動寫入1
127.0.0.1:6379> incr key5
(integer) 1
127.0.0.1:6379> get key5
"1"
數值依照設定數值進行遞增.
127.0.0.1:6379> get key5
"1"
# 指定遞增數為10並依此對key的value值進行遞增10
127.0.0.1:6379> incrby key5 10
(integer) 11
127.0.0.1:6379> get key5
"11"
數值遞減1.
127.0.0.1:6379> get key5
"11"
127.0.0.1:6379> decr key5
(integer) 10
127.0.0.1:6379> get key5
"10"
數值依照設定數值進行遞減.
127.0.0.1:6379> get key5
"10"
# 指定遞減數為3並依此對key的value值進行遞減3
127.0.0.1:6379> decrby key5 3
(integer) 7
127.0.0.1:6379> get key5
"7"
指定key的value字串長度.
127.0.0.1:6379> get key1
"jacky"
127.0.0.1:6379> strlen key1
(integer) 5
指定key的value字串插入字串.
127.0.0.1:6379> get key1
"jacky"
127.0.0.1:6379> append key1 www
(integer) 8
127.0.0.1:6379> get key1
"jackywww"
指定key取得value中的起始與結束字元.
127.0.0.1:6379> get key1
"jackywww"
127.0.0.1:6379> getrange key1 0 3
"jack"
指定key取代從指定位置取代value字元.
127.0.0.1:6379> get key1
"jackywww"
127.0.0.1:6379> setrange key1 5 ggg
(integer) 8
127.0.0.1:6379> get key1
"jackyggg"
當指定的key不存在時才寫入key與value.
127.0.0.1:6379> set key1 jacky
OK
127.0.0.1:6379> get key1
"jacky"
127.0.0.1:6379> set key1 jacky2
OK
127.0.0.1:6379> get key1
"jacky2"
# 當key1不存在才寫入jacky3到key1的value
127.0.0.1:6379> setnx key1 jacky3
(integer) 0
127.0.0.1:6379> get key1
"jacky2"
127.0.0.1:6379> get key3
(nil)
# 當指定的key存在時才寫入key與value.
127.0.0.1:6379> set key3 abc xx
(nil)
設定key過期時間並寫入value,key到期Redis背景會自動刪除.(秒)
127.0.0.1:6379> setex key3 5 www
OK
127.0.0.1:6379> get key3
"www"
127.0.0.1:6379> ttl key3
(integer) 1
127.0.0.1:6379> get key3
(nil)
設定key過期時間並寫入value,key到期Redis背景會自動刪除.(毫秒)
127.0.0.1:6379> get key3
(nil)
127.0.0.1:6379> psetex key3 50000 www
OK
127.0.0.1:6379> get key3
"www"
127.0.0.1:6379> pttl key3
(integer) 43641
127.0.0.1:6379> get key3
(nil)
取得目前指定key的值,並寫入新的值.
127.0.0.1:6379> get key4
(nil)
127.0.0.1:6379> getset key4 ccc
(nil)
127.0.0.1:6379> get key4
"ccc"
數值依照設定浮點數值進行遞增.
127.0.0.1:6379> get key5
(nil)
127.0.0.1:6379> set key5 123.456
OK
127.0.0.1:6379> incrbyfloat key5 0.001
"123.457"
127.0.0.1:6379> get key5
"123.457"
一次設定多筆的key不存在時才寫入key與value.
127.0.0.1:6379> mget key1 key2
1) (nil)
2) (nil)
127.0.0.1:6379> msetnx key1 jacky key2 123
(integer) 1
127.0.0.1:6379> mget key1 key2
1) "jacky"
2) "123"
127.0.0.1:6379> msetnx key1 boy key2 456
(integer) 0
確認指定key是否存在.
# 存在此key
127.0.0.1:6379> exists key1
(integer) 1
# 存在此2個key
127.0.0.1:6379> exists key1 key2
(integer) 2
# 只存在此2個key,key3不存在
127.0.0.1:6379> exists key1 key2 key3
(integer) 2
設定key過期時間,key到期Redis背景會自動刪除.(秒)
127.0.0.1:6379> expire key1 3
(integer) 1
# 已刪除
127.0.0.1:6379> get key1
(nil)
# 設定key1值並設定到期時間為2秒
127.0.0.1:6379> set key1 jacky ex 10
OK
# 剩餘7秒到期
127.0.0.1:6379> ttl key1
(integer) 7
# 到期已刪除
127.0.0.1:6379> get key1
(nil)
設定key過期時間,key到期Redis背景會自動刪除.(毫秒)
127.0.0.1:6379> pexpire key2 100
(integer) 1
# 已刪除
127.0.0.1:6379> get key2
(nil)
# 設定key1值並設定到期時間為1000毫秒
127.0.0.1:6379> set key1 jacky px 20000
OK
# 剩餘8666毫秒到期
127.0.0.1:6379> pttl key1
(integer) 8666
# 到期已刪除
127.0.0.1:6379> get key1
(nil)
刪除指定key與value,如果大量刪除有可能會讓Redis主thread佔用進而影響操作.
# 刪除5個key成功
127.0.0.1:6379> del key1 key2 key3 key4 key5
(integer) 5
# 沒有刪除任何一個key
127.0.0.1:6379> del key1 key2 key3 key4 key5
(integer) 0
將指定key由keyspace的資料中刪除,但實際資料會由背景執行Process進行刪除,所以大量資料刪除時不會影響Redis主thread操作.
127.0.0.1:6379> unlink name1 name2 name3
(integer) 3